﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Domain.MainModule.Entities;

namespace Application.MainModule.EmployeesManagement
{
    public interface IEmployeeManagementService
    {
        /// <summary>
        /// Add new employee
        /// </summary>
        /// <param name="employee">Employee to be added</param>
        void AddEmployee(Employee employee);

        /// <summary>
        /// Change existing employee
        /// </summary>
        /// <param name="employee">Existing employee to modify</param>
        void ChangeEmployee(Employee employee);

        /// <summary>
        /// Remove existing employee
        /// </summary>
        /// <param name="employee">Employee to remove</param>
        void RemoveEmployee(Employee employee);

        /// <summary>
        /// Find an employee using MembershipUserId
        /// </summary>
        /// <param name="userId">MembershipUserId</param>
        /// <returns>An employee</returns>
        Employee FindEmplyeeByMembershipUserId(Guid userId);

        /// <summary>
        /// Find an employee using yours branchId
        /// </summary>
        /// <param name="branchId">branchId</param>
        /// <returns>An employee</returns>
        Employee FindEmplyeeByBranchId(Guid branchId);

        Employee FindEmployeeById(Guid userId);

        List<Employee> FindPagedEmployees(int pageIndex, int pageCount);
    }
}
